package genetic.core;

/**
 * Variable that is subject of evolutionary operators.
 * 
 * @author vasek
 *
 */
public interface Variable {

	/**
	 * Mutate this variable into new one.
	 * 
	 * @return mutated {@link Individual}
	 */
	Individual mutate();
	
	/**
	 * Crossover of this and other variable into new one.
	 * 
	 * @param other other variable
	 * @return new cross-variable
	 */
	Individual crossover(Individual other);
}
